/*
@auther fenglei
*/
package xxgf

import (
	"gitee.com/fenglei-l/ops-util/xxlog"
	"github.com/gogf/gf/v2/net/ghttp"
	"os"
	"os/signal"
	"syscall"
)

func RunWindowsServer(s *ghttp.Server, shutdownHook func()) error {
	//https://goframe.org/docs/web/server-config-file-template
	//config := ghttp.ServerConfig{ServerAgent: "Up366", ReadTimeout: 120 * time.Second}
	//_ = s.SetConfig(config)
	// 创建一个用于优雅关闭的通道
	quit := make(chan os.Signal)
	signal.Notify(quit, os.Interrupt, syscall.SIGTERM)

	// 在新的 goroutine 中启动服务器
	go func() {
		s.Run()
	}()

	// 等待中断信号
	<-quit
	xxlog.InfoUp366("正在关闭服务器...")

	// 执行关闭钩子函数
	if shutdownHook != nil {
		shutdownHook()
	}
	// 尝试优雅关闭服务器
	if err := s.Shutdown(); err != nil {
		return err
	}
	return nil
}
